#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[30] = { 1 };
int count = 0;
void decom(int n, int loc, int sum,int m)
{
    if (sum == n)
    {
        printf("%d=", n);
        int i;
        for (i = 1; i < loc; i++)
        { 
            if (i == 1)
                printf("%d", arr[i]);
            else
                printf("+%d", arr[i]);
        }
        count++;
        if (count % 4 == 0)
            printf("\n");
        else if (arr[i - 1] == n)
        {
            ;
        }
        else
        {
            printf(";");
        }
        return;
    }
    else if (sum < n)
    {
        for (int i = m; i <= n; i++)
        {
            arr[loc] = i;
            decom(n, loc + 1, sum + i,i);
        }
    }
}
int main()
{
    int n, loc = 1, sum = 0, m = 1;
    scanf("%d", &n);
    decom(n, loc, sum,m);
    return 0;
}
//#include <stdio.h>
//int main()
//{
//    int n1, n2;
//    scanf("%d%d", &n1, &n2);
//    int n;
//    int a, a1, b, b1, count1 = 0, count2 = 0;
//    scanf("%d", &n);
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d%d%d%d", &a, &a1, &b, &b1);
//        int ret = a + b;
//        if (a1 == ret && b1 == ret)
//            continue;
//        else if (a1 == ret)
//        {
//            count2++;
//            if (count2 > n2)
//                break;
//        }
//        else if (b1 == ret)
//        {
//            count1++;
//            if (count1 > n1)
//                break;
//        }
//        else
//            continue;
//    }
//    if (count1 > n1)
//    {
//        printf("A\n%d", count2);
//    }
//    else
//    {
//        printf("B\n%d", count1);
//    }
//    return 0;
//}
//#include <stdio.h>
//int main()
//{
//    int h, m;
//    scanf("%d:%02d", &h, &m);
//    if (h < 12)
//    {
//        printf("Only %02d:%02d.  Too early to Dang.", h, m);
//    }
//    else if (h == 12)
//    {
//        if (m == 0)
//            printf("Only %02d:%02d.  Too early to Dang.", h, m);
//        else
//            printf('dang');
//    }
//    else
//    {
//        for (int i = 0; i < h - 12; i++)
//            printf("dang");
//        if (m > 0)
//            printf("dang");
//    }
//    return 0;
//}
//#include <stdio.h>
//int main()
//{
//    int arr[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
//    char check[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
//    char s[18] = { 0 };
//    int n, i, j, count = 0, flag1 = 0, flag2 = 0, flag3 = 0;
//    scanf("%d", &n);
//    for (i = 0; i < n; i++)
//    {
//        flag1 = 0;
//        scanf("%s", s);
//        int sum = 0;
//        for (j = 0; j < 17; j++)
//        {
//            if (s[j] != 'X')
//                sum = sum + arr[j] * (s[j] - '0');
//            else
//            {
//                break;
//                flag1 = 1;
//            }
//        }
//        if (s[17] != check[sum % 11] || flag1 == 1)
//        {
//            if (flag3 == 0)
//            {
//                printf("%s", s);
//                flag3 = 1;
//            }
//            else
//                printf("\n%s", s);
//            flag2 = 1;
//        }
//    }
//    if (flag2 == 0)
//        printf("All passed");
//    return 0;
//}
//#include <stdio.h>
//#include <string.h>
//int main()
//{
//    char a[100000] = { 0 };
//    char b[100000] = { 0 };
//    gets(a);
//    gets(b);
//    for (int i = 0; i < strlen(a); i++)
//    {
//        if (strchr(b, a[i]))
//            continue;
//        else
//            printf("%c", a[i]);
//    }
//    return 0;
//}